package GUI;

import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.swing.*;

import GUI.manager.VentanaFactory;
import GUI.manager.VentanaManager;

import core.manager.ProvinciaFactory;
import core.manager.ProvinciaManager;
import core.manager.impl.ProvinciaManagerImpl;
import core.model.Provincia;
import core.model.Usuario;

import java.awt.Robot;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.event.*;
import java.awt.image.BufferedImage;
import java.awt.AWTException;

public class mapa extends JPanel implements MouseListener, MouseMotionListener,
		ActionListener {

	/**
         * 
         */
	public static String nombre;
	public static String apellido1;
	public static String apellido2;
	public static String nick;
	public static String email;
	

	private static final long serialVersionUID = 7477626400363970856L;
	private JLabel imagen, texto;
	private String espacios;
	private JToggleButton tbAceptar;
	private JFrame actual;
	private JPanel estePanel;
	private Robot robot;
	private Provincia seleccion;
	private Thread t;
	private Point p;
	private ProvinciaManager provinciaManager = ProvinciaFactory.getInstance();
	private boolean clickado = false;
	private Usuario usuario;
	VentanaManager ventanaManager = VentanaFactory.getInstance();
	private int ant;

	

    public mapa(Usuario a,int num) {
    	
    	
    	 ant=num;
        usuario = a;
        estePanel = this;
        imagen = new JLabel();
        imagen.addMouseListener(this);
        imagen.addMouseMotionListener(this);
        imagen.setIcon(new ImageIcon("src/GUI/resources/espana.png"));
        this.setLayout(new BorderLayout());
        this.add(imagen, "North");
        seleccion = null;
        espacios = "                                                                ";
        texto = new JLabel();
        texto.setFont(new Font("Lucida Handwriting", 1, 13));
        texto.setText(espacios + "Seleccion Actual:"
                        + " Seleccione una provincia en el mapa. ");
        this.add(texto, "Center");
        tbAceptar = new JToggleButton("Confirmar Seleccion");
        tbAceptar.addActionListener(this);
        this.add(tbAceptar, "South");
        declararHilo();

}


	public void declararHilo() {
		t = new Thread(new Runnable() {
			public void run() {
				Color a = new Color(0, 0, 0);
				int x = (int) p.getX();
				int y = (int) p.getY();
				try {
					robot = new Robot();
					a = robot.getPixelColor(x, y);
				} catch (AWTException f) {
					f.printStackTrace();
					System.out.println("Excepcion en el metodo getColor()");
				}
				seleccion = provinciaManager.getProvincia(a.getRed(),
						a.getGreen(), a.getBlue());
				texto.setText(espacios + "Seleccion Actual: "
						+ seleccion.getNombre());
			}

		});
	}

	@Override
	public void mouseClicked(MouseEvent e) {

	}

	@Override
	public void mousePressed(MouseEvent e) {
		clickado = true;
		p = e.getLocationOnScreen();
		t.run();

	}

	@Override
	public void mouseReleased(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseEntered(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseExited(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseDragged(MouseEvent e) {
		// TODO Auto-generated method stub

	}

	@Override
	public void mouseMoved(MouseEvent e) {
		if (!clickado) {
			p = e.getLocationOnScreen();
			t.run();
		}

	}

	@Override
	public void actionPerformed(ActionEvent e) {
        if ((e.getSource() == tbAceptar)&&(ant==1)) {
        	
            //usuario.setCodigo_provincia(seleccion.getCod_provincia());// ventanaManager.getCodigoProvincia(seleccion.getNombre()).
           panelRegistro.provincia=seleccion.getCod_provincia()-1;
            
            actual = (JFrame) UtilidadesGUI.getContenedorPrincipal(estePanel);
            actual.getContentPane().remove(0);
            actual.getContentPane().add(new panelRegistro());
            actual.setPreferredSize(new Dimension(610, 650));
            actual.pack();
            UtilidadesGUI.CentrarPantalla(actual);
    }

		if ((e.getSource() == tbAceptar)&&(ant==2)) {
			//usuario.setCodigo_provincia(seleccion.getCod_provincia()); // ventanaManager.getCodigoProvincia(seleccion.getNombre()).
			panelOpciones.cod_provincia=seleccion.getCod_provincia()-1;
			actual = (JFrame) UtilidadesGUI.getContenedorPrincipal(estePanel);
			actual.getContentPane().remove(0);
			actual.getContentPane().add(new panelOpciones());
			actual.setPreferredSize(new Dimension(850, 630));
			actual.pack();
			UtilidadesGUI.CentrarPantalla(actual);
		}

	}

}